package de.cbf.cam.dsa.dataprovider.talents;

import java.util.ArrayList;
import java.util.List;

import de.cbf.cam.dsa.model.base.TalentTmpl;
import de.cbf.cam.dsa.model.entities.OneAttribute;
import de.cbf.cam.dsa.model.entities.constants.TalentConstants;

public class TalentProviderNature {
	private final int TYPE = TalentTmpl.TYPE_Talent_Nature;
	
	private static TalentProviderNature instance = new TalentProviderNature();

	public static TalentProviderNature getInstance() {
		return instance ;
	}

	public List<TalentTmpl> provideNatureTalents() {
		List<TalentTmpl> resultList = new ArrayList<TalentTmpl>();
		
		resultList.add(provideFaehrtensuchen());
		resultList.add(provideFallenStellen());
		resultList.add(provideFesseln());
		resultList.add(provideFischen());
		resultList.add(provideOrientierung());
		resultList.add(provideWettervorhersage());
		resultList.add(provideWildnisleben());
			
		return resultList;
	}
	private TalentTmpl provideFaehrtensuchen() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Faehrtensuche, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.KL,OneAttribute.IN,OneAttribute.IN});
		template.addCompensateTalent(TalentConstants.Sinnenschaerfe, -10);		
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideFallenStellen() {
		TalentTmpl template = new TalentTmpl(TalentConstants.FallenStellen, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.KL,OneAttribute.FF,OneAttribute.KK});
		template.addCompensateTalent(TalentConstants.Wildnisleben, -10);		
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideFesseln() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Fesseln, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.FF,OneAttribute.GE,OneAttribute.KK});
		template.addCompensateTalent(TalentConstants.Seiler, -10);		
		template.addCompensateTalent(TalentConstants.Seefahrt, -10);
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideFischen() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Fischen, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.IN,OneAttribute.FF,OneAttribute.KK});
		template.addCompensateTalent(TalentConstants.Wildnisleben, -10);		
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideOrientierung() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Orientierung, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.KL,OneAttribute.IN,OneAttribute.IN});
		template.addCompensateTalent(TalentConstants.Sternkunde, -10);		
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideWettervorhersage() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Wettervorhersage, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.KL,OneAttribute.IN,OneAttribute.IN});
		template.addCompensateTalent(TalentConstants.Wildnisleben, -10);		
		template.setSktColumn('B');
		return template;
	}
	private TalentTmpl provideWildnisleben() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Wildnisleben, TYPE);
		template.setAttributesToTest(new String[]{OneAttribute.IN,OneAttribute.GE,OneAttribute.KO});
		template.addCompensateTalent(TalentConstants.Tierkunde, -10);
		template.addCompensateTalent(TalentConstants.Pflanzenkunde, -10);
		template.setSktColumn('B');
		return template;
	}
}
